package com.gitee.l0km.beanfilter.core;

/**
 * 字段值过滤器
 * @author guyadong
 */
public interface IValueFilter extends IFilter{
	/**
	 * 修改指定字段的值
	 * @param clazz Java Bean类型
	 * @param name 字段
	 * @param value 字段值
	 * @return 返回修改后的字段值,返回值可以与原值不是同一个类型，但必须能通过fastjson,jackson转为原值类型否则报错
	 */
	Object process(Class<?> clazz,String name, Object value);
	public IValueFilter DEFAULT_INSTANCE = new DefaultValueFilter();
	public static final class DefaultValueFilter implements IValueFilter {
		@Override
		public Object process(Class<?> clazz, String name, Object value) {
			return value;
		}
		@Override
		public int hashCode() {
			return getClass().hashCode();
		}
		@Override
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			return getClass() == obj.getClass();
		}};
}
